package com.component.api.model.flow;

import lombok.*;

import java.io.Serializable;
import java.util.Objects;

/**
 * 描述：
 * 节点信息
 * @author xianggj
 * @Date 2021/10/14 17:27
 **/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class NodeInfo implements Serializable {

    private static final long serialVersionUID = -1L;

    /**
     * 唯一id
     */
    private String id;

    /**
     * 节点名称
     */
    private String name;

    /**
     * 节点规则
     */
    private String rule;

    /**
     * 参数字段
     *  这里应该是个数组
     */
    private String param;

    /**
     * 是否需要执行
     */
    private Boolean isExec;

    /**
     * 是否首节点
     */
    private Boolean isFirstNode;

    /**
     * grap 图有个bug 修改了Boolean类型后 图里面对象不相等了
     * 我们以id唯一原则，当id相同 节点一定相同
     * @param o
     * @return
     */
    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        NodeInfo nodeInfo = (NodeInfo) o;
        return Objects.equals(id, nodeInfo.id);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }
}
